/*
* 苏州海管家物流科技有限公司（https://www.hgj.com/）.
* 苏公网安备32059002003385号 © 2015-2022 Hgj.com All Rights Reserved. | 苏ICP备15030950号.
* @Date: 2022.04.04.
* @Author
* @Description 企点管理后台 - 路由表 总入口.
**/
import cabinRoute from './cabinRoute' // 舱位交易
import expressRoutes from './expressRoute' // 快递查询
import harborRoute from './harborRoute' // 港口设置
import statisticsRoute from './statisticsRoute' // 数据统计
import { createRouter, createWebHashHistory, RouteRecordRaw } from 'vue-router'
/*
RouteRecordRaw = [
        path: string,                       // 记录的路径,应该以 / 开头，除非该记录是另一条记录的子记录。可以定义参数：/users/:id 匹配 /users/1 以及 /users/po sva。
        meta: RouteMeta                     // (可选) 在记录上附加自定义数据。
        name: string | symbol               // (可选) 路由记录独一无二的名称。
        (可选) 路由的别名。允许定义类似记录副本的额外路由。这使得路由可以简写为像这种 /users/:id 和 /u/:id。 所有的 alias 和 path 值必须共享相同的参数。
        alias: string | string[]
        children: RouteRecordRaw,           //  数组 (可选), 当前记录的嵌套路由。
        beforeEnter: NavigationGuard | NavigationGuard[]    // (可选) 在进入特定于此记录的守卫之前。注意如果记录有重定向属性，则 beforeEnter 无效。
        redirect: RouteLocationRaw | (to: RouteLocationNormalized) => RouteLocationRaw              // (可选) 重定向
        (可选) 允许将参数作为 props 传递给由 router-view 渲染的组件。当传递给一个多视图记录时，它应该是一个与组件具有相同键的对象，或者是一个应用于每个组件的布尔值。
        props: boolean | Record<string, any> | (to: RouteLocationNormalized) => Record<string, any>
   ]
*/

const adminRoute: Array<RouteRecordRaw> = [
    {
        path: '/clue-manage',
        name: 'ClueManage',
        component: () => import('@/views/clue-manage/index.vue'),
        meta: {
            title: '线索管理'
        }
    },
    {
        path: '/company-manage',
        name: 'CompanyManage',
        component: () => import('@/views/company-manage/index.vue'),
        meta: {
            title: '企业管理'
        }
    },    
    {
        path: '/payment-manage',
        name: 'PaymentManage',
        component: () => import('@/views/payment-manage/index.vue'),
        meta: {
            title: '支付管理'
        }
    }
    /* {
           path: '/:catchAll(.*)', // 404,
           name: 'Home',
           redirect: '/home',
           meta: {
               title: '欢迎页面',
               isLink: 'https://nodejs.org/zh-cn/',
               isHide: false,
               isKeepAlive: false,
               isAffix: true,
               isIframe: true,
               roles: ['admin'],
               icon: 'iconfont icon-neiqianshujuchucun'
           },
           component: () => import('@/views/Home/index.vue'),
       }, */
]

const routes: Array<RouteRecordRaw> =  [...adminRoute, ...expressRoutes, ...harborRoute,  ...cabinRoute, ...statisticsRoute]

// 注册
const router = createRouter({
    // hash: createWebHashHistory(),    // 没有 base，应用托管在域名 `https://example.com` 的根目录下。
    history: createWebHashHistory(),    // history 模式则使用 createWebHistory()
    /* createWebHistory('/folder/')     // 给出的网址为 `https://example.com/folder/`
       abstract: createMemoryHistory(process.env.BASE_URL), */
    routes
})
// 前置守卫 - beforeResolve
router.beforeEach((to, from, next) => {
    console.log('前置守卫 to:', to)
    console.log('前置守卫 from:', from)
    /* 返回 false 以取消导航
       return true */
    next()
})
// 后置守卫
router.afterEach((to, from, failure) => {
    console.log('后置守卫 to:', to)
    console.log('后置守卫 from:', from)
    console.log('后置守卫 failure:',  failure)
})


console.log("router==routes-----", routes)
console.log("router-----------------", router)

export default router